Efficient pre-computing of simplified vector data for rendering at multiple zoom levels

ABSTRACT

Aspects of the invention relate generally to accessing, storing, and processing vector data to represent various geographical features such as roads, rivers, lakes, countries, continents, and oceans on one or more maps. More specifically, the vector data may be pre-simplified for rendering at different zoom levels. The simplification process is based on removing vertices from vector data in order to reduce the number of points in a given polygon or line. As this process is very expensive in terms of time and processing power, the system and method allow for estimation of the proportion of vertices which that would be removed from the original geometry. Based on this estimation, one may decide whether or not the simplification is worth the effort to compute and store the simplified data.

BACKGROUND OF THE INVENTION

Various map services employ vector data to represent geographicalfeatures such as roads, rivers, lakes, countries, continents, oceans,etc. For example, a geographical feature or object may be represented byconnecting the vertices of one or more vectors. While the great majorityof these features are relatively small, for example, about 1-1.5kilobyte, a significant number of them may be extremely large, forexample, on the order of a megabyte or larger. The largest features mayinvolve hundreds of thousands, or sometimes millions of vertices.Transmitting all of this information to a client device to render thesefeatures at all zoom levels based on their original geometry isimpractical and wasteful of computing resources.

These map services may receive a request from a client device for a mapof a given location and, in response, transmit a portion of the mapinformation for display on the client device. These services may alsotransmit highly accurate map information as vector data and allow theclient device to render the map at various zoom levels based on the sameinformation. In other words, the client device may not request a new mapeach time the user “zooms” in or out of the map. Rather, each “zoom”level is redrawn based on the vector data received from the service.

Thus, the same amount of data and accuracy exists when the client devicerenders the map at the highest zoom level as at the lowest zoom level.However, at the lowest zoom level many objects may no longer be visibleas they may overlap one another or be drawn within a single pixel. Forexample, as a user zooms out, such that a larger geographic area isdisplayed, many of the details of an object may be obscured as more ofthe map information is packed into a smaller area and less and less ofthe object's vertices are distinguishable.

For example, a user may examine the coast of Massachusetts in order toexplore the vector data representation of the Atlantic Ocean. The mapinformation associated with the Atlantic Ocean may include well over amillion vertices. However, when zooming out at world level, all of thefiner details in the geometry of the Atlantic Ocean (or theMassachusetts coastline) are no longer distinguishable. Many of thevertices that make up the Atlantic Ocean may actually overlap on thesame screen pixel. Thus, rendering the Atlantic Ocean at such a highzoom level does not require the same level of accuracy as when exploringthe coastline of a particular Massachusetts town.

BRIEF SUMMARY OF THE INVENTION

Aspects of the invention relate generally to accessing, storing andproviding vector data to represent various geographical features such asroads, rivers, lakes, countries, continents, and oceans on one or moremaps. More specifically, the vector data may be pre-simplified forrendering at different zoom levels. For example, for a range of zoomlevels, at the highest zoom level, a relatively small geographic areamay be displayed with a high level of detail. At the lowest zoom level,a relatively large geographic area may be displayed in lower detail.

The simplification process is based on removing vertices from vectordata in order to reduce the number of points in a given polygon or line.Such a process may be very expensive in terms of time and processingpower; thus, aspects of the invention allow for estimation of theproportion of vertices that may be removed from the original geometry.Based on this estimation, one may decide whether or not thesimplification is worth the effort to compute and store the simplifieddata.

One aspect of the invention provides a computer-implemented method. Themethod includes accessing map information associated with a first zoomlevel. The map information includes a plurality of vertices associatedwith one or more objects such that each object is associated with a setof one or more vertices of the plurality of vertices. The method alsoincludes identifying a minimum threshold proportion for determiningwhether to simplify the map information. A tolerance distance valueassociated with a second zoom level that includes a lesser amount ofdetail than the first zoom level is identified. A processor determines asubset of the plurality of vertices based on (1) for each object of theone or more objects, calculating a distance from each given vertex ofthe set of one or more vertices associated with the object to a linebetween the immediate neighboring vertices of the given vertex, and (2)determining whether each calculated distance is less than or equal tothe tolerance distance value associated with the second zoom level. Aproportion is determined based on the subset and the plurality ofvertices. If the proportion is greater than or equal to the minimumthreshold proportion, a simplified version of the map information iscalculated at the second zoom level.

In one example, the method also includes identifying a tolerancedistance value associated with a third zoom level. If the proportion isless than the minimum threshold value, the processor determines a secondsubset of the plurality of vertices. The second subset is determinedbased on (1) for each object of the one or more objects, calculating thedistance from each given vertex of the set of one or more verticesassociated with the object to a line between the immediate neighboringvertices of the given vertex, and (2) determining whether eachcalculated distance is less than or equal to the tolerance distancevalue associated with the third zoom level. A second proportion isdetermined based on the second subset and the plurality of vertices. Ifthe second proportion is greater than the minimum threshold value,another simplified version of the map information is calculated at thethird zoom level.

In one alternative, the second zoom level includes a greater level ofdetail than the third zoom level. In another alternative, the tolerancedistance value associated with the second zoom level is less than thetolerance distance value associated with the third zoom level.

In another example, the simplified version of the map information at thesecond zoom level includes a second plurality of vertices of theplurality of vertices associated with one or more second objects suchthat each second object is associated with a second set of one or morevertices of the plurality of vertices. A tolerance distance valueassociated with a third zoom level which includes a lesser amount ofdetail than the second zoom level is identified. The method alsoincludes determining, by a processor, a second subset of the pluralityof vertices. The second subset is based on (1) for each second object ofthe one or more second objects, calculating a distance from each givenvertex of the second set of one or more vertices associated with thesecond object to a line between the immediate neighboring vertices ofthe given vertex associated with the second object, and (2) determiningwhether each calculated distance is less than or equal to the tolerancedistance value associated with the third zoom level. A second proportionis determined based on the second subset and the plurality of vertices.If the second proportion is greater than or equal to the minimumthreshold value, a second simplified version of the map information atthe third zoom level is calculated.

In one alternative, the method also includes identifying a tolerancedistance value associated with a fourth zoom level. If the secondproportion is less than the minimum threshold value, determining, by theprocessor, a third subset of the plurality of vertices. The third subsetis based on (1) for each second object of the one or more secondobjects, calculating a distance from each given vertex of the set of oneor more vertices associated with the second object to a line between theimmediate neighboring vertices of the given vertex associated with thesecond object, and (2) determining whether each calculated distance isless than or equal to the tolerance distance value associated with thefourth zoom level. A third proportion is determined based on the thirdsubset and the plurality of vertices. If the third proportion is greaterthan the minimum threshold value, another simplified version of the mapinformation at the fourth zoom level is calculated.

In another alternative, the method also includes receiving, from a firstdevice, a request for map information associated with a particular zoomlevel including a particular level of detail. Responsive map informationassociated with a zoom level which includes a level of detail closest tothe particular level of detail and which is also greater than or equalto the particular level of detail is identified. The responsive mapinformation is transmitted to the first device for display at theparticular zoom level.

In yet another alternative, the method also includes storing thesimplified version of the map information at the second zoom level andthe second simplified version of the map information at the third zoomlevel in memory accessible by the processor.

Another aspect of the invention provides a device. The device includesmemory storing map information associated with a first zoom level. Themap information includes a plurality of vertices associated with one ormore objects such that each object is associated with a set of one ormore vertices of the plurality of vertices. The device also includes aprocessor coupled to the memory. The processor is operable to identify aminimum threshold proportion for determining whether to simplify the mapinformation; identify a tolerance distance value associated with asecond zoom level that includes a lesser amount of detail than the firstzoom level; and determine a subset of the plurality of vertices. Thesubset is determined based on (1) for each object of the one or moreobjects, calculating a distance from each given vertex of the set of oneor more vertices associated with the object to a line between theimmediate neighboring vertices of the given vertex, and (2) determiningwhether each calculated distance is less than or equal to the tolerancedistance value associated with the second zoom level. The processor isalso operable to determine a proportion based on the subset and theplurality of vertices. If the proportion is greater than or equal to theminimum threshold proportion, the processor is operable to calculate asimplified version of the map information at the second zoom level.

In one example, the processor is also operable to identify a tolerancedistance value associated with a third zoom level. If the proportion isless than the minimum threshold value, the processor is operable todetermine a second subset of the plurality of vertices. The secondsubset is based on (1) for each object of the one or more objects,calculating the distance from each given vertex of the set of one ormore vertices associated with the object to a line between the immediateneighboring vertices of the given vertex, and (2) determining whethereach calculated distance is less than or equal to the tolerance distancevalue associated with the third zoom level. The processor is alsooperable to determine a second proportion based on the second subset andthe plurality of vertices. If the second proportion is greater than theminimum threshold value, the processor is operable to calculate anothersimplified version of the map information at the third zoom level.

In one alternative, the second zoom level includes a greater level ofdetail than the third zoom level. In another alternative, the tolerancedistance value associated with the second zoom level is less than thetolerance distance value associated with the third zoom level.

In another example, the simplified version of the map information at thesecond zoom level includes a second plurality of vertices of theplurality of vertices associated with one or more second objects suchthat each second object is defined by a second set of one or morevertices of the plurality of vertices. In this example, the processor isfurther operable to identify a tolerance distance value associated witha third zoom level which includes a lesser amount of detail than thesecond zoom level and determines a second subset of the plurality ofvertices. The second subset is based on (1) for each second object ofthe one or more second objects, calculating a distance from each givenvertex of the second set of one or more vertices associated with thesecond object to a line between the immediate neighboring vertices ofthe given vertex associated with the second object, and (2) determiningwhether each calculated distance is less than or equal to the tolerancedistance value associated with the third zoom level. The processor isalso operable to determine a second proportion based on the secondsubset and the plurality of vertices. If the second proportion isgreater than or equal to the minimum threshold value, the processor isoperable to calculate a second simplified version of the map informationat the third zoom level.

In one alternative, the processor is further operable to identify atolerance distance value associated with a fourth zoom level. If thesecond proportion is less than the minimum threshold value, determine athird subset of the plurality of vertices. The third set is based on (1)for each second object of the one or more second objects, calculating adistance from each given vertex of the set of one or more verticesassociated with the second object to a line between the immediateneighboring vertices of the given vertex associated with the secondobject, and (2) determining whether each calculated distance is lessthan or equal to the tolerance distance value associated with the fourthzoom level. The processor is also operable to determine a thirdproportion based on the third subset and the plurality of vertices. Ifthe third proportion is greater than the minimum threshold value, theprocessor is operable to calculate another simplified version of the mapinformation at the fourth zoom level.

In another alternative, the processor is also operable to receive, froma first device, a request for map information associated with aparticular zoom level including a particular level of detail. Theprocessor is operable to identify responsive map information associatedwith a zoom level which includes a level of detail closest to theparticular level of detail and which is also greater than or equal tothe particular level of detail. The processor is also operable totransmit the responsive map information to the first device for displayat the particular zoom level.

In yet another alternative, the processor is also operable to store thesimplified version of the map information at the second zoom level andthe second simplified version of the map information at the third zoomlevel in the memory.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a functional diagram of a system in accordance with an aspectof the invention.

FIG. 2 is a pictorial diagram of a system in accordance with an aspectof the invention.

FIGS. 3A and 3B are exemplary screen shots in accordance with an aspectof the invention.

FIG. 4 is a diagram of exemplary data in accordance with an aspect ofthe invention.

FIG. 5 is another diagram of exemplary data in accordance with an aspectof the invention.

FIG. 6 is an exemplary flow diagram data in accordance with an aspect ofthe invention.

DETAILED DESCRIPTION

As shown in FIGS. 1-2, a system 100 in accordance with one aspect of theinvention includes a computer 110 containing a processor 120, memory 130and other components typically present in general purpose computers.

The memory 130 stores information accessible by processor 120, includinginstructions 132, and data 134 that may be executed or otherwise used bythe processor 120. The memory 130 may be of any type capable of storinginformation accessible by the processor, including a computer-readablemedium, or other medium that stores data that may be read with the aidof an electronic device, such as a hard-drive, memory card, flash drive,ROM, RAM, DVD or other optical disks, as well as other write-capable andread-only memories. In that regard, memory may include short term ortemporary storage as well as long term or persistent storage. Systemsand methods may include different combinations of the foregoing, wherebydifferent portions of the instructions and data are stored on differenttypes of media.

The instructions 132 may be any set of instructions to be executeddirectly (such as machine code) or indirectly (such as scripts) by theprocessor. For example, the instructions may be stored as computer codeon the computer-readable medium. In that regard, the terms“instructions” and “programs” may be used interchangeably herein. Theinstructions may be stored in object code format for direct processingby the processor, or in any other computer language including scripts orcollections of independent source code modules that are interpreted ondemand or compiled in advance. Functions, methods and routines of theinstructions are explained in more detail below.

The data 134 may be retrieved, stored or modified by processor 120 inaccordance with the instructions 132. For instance, although thearchitecture is not limited by any particular data structure, the datamay be stored in computer registers, in a relational database as a tablehaving a plurality of different fields and records, XML documents orflat files. The data may also be formatted in any computer-readableformat. By further way of example only, image data may be stored asbitmaps comprised of grids of pixels that are stored in accordance withformats that are compressed or uncompressed, lossless or lossy, andbitmap or vector-based, as well as computer instructions for drawinggraphics. The data may comprise any information sufficient to identifythe relevant information, such as numbers, descriptive text, proprietarycodes, references to data stored in other areas of the same memory ordifferent memories (including other network locations or servers) orinformation that is used by a function to calculate the relevant data.

The processor 120 may be any conventional processor, such as processorsfrom Intel Corporation or Advanced Micro Devices. Alternatively, theprocessor may be a dedicated controller such as an ASIC. Although FIG. 1functionally illustrates the processor and memory as being within thesame block, it will be understood by those of ordinary skill in the artthat the processor and memory may actually comprise multiple processorsand memories that may or may not be stored within the same physicalhousing. For example, memory may be a hard drive or other storage medialocated in a server farm of a data center. Accordingly, references to aprocessor, computer or memory will be understood to include referencesto a collection of processors or computers or memories that may or maynot operate in parallel.

The computer 110 may be at one node of a network 150 and capable ofdirectly and indirectly receiving data from other nodes of the network.For example, computer 110 may comprise a web server that is capable ofreceiving data from client devices 160 and 170 via network 150 such thatserver 110 uses network 150 to transmit and display information to auser on display 165 of client device 170. Server 110 may also comprise aplurality of computers that exchange information with different nodes ofa network for the purpose of receiving, processing and transmitting datato the client devices. In this instance, the client devices willtypically still be at different nodes of the network than any of thecomputers comprising server 110.

It will be understood that the network may also include various othersoftware and hardware components which may perform various intermediateprocessing steps. For example, some end user devices such as mobilephones may receive and display tile data as opposed to vector data. Inthis example, a service may request vector data on behalf of the mobilephone. The service (hardware and/or software) may receive the vectordata, compute it into image tiles, and transmit the tiles to the mobilephone for display to a user. Accordingly, this “service” may beconsidered part of the server, client devices, or both.

Network 150, and intervening nodes between server 110 and clientdevices, may comprise various configurations and use various protocolsincluding the Internet, World Wide Web, intranets, virtual privatenetworks, local Ethernet networks, private networks using communicationprotocols proprietary to one or more companies, cellular and wirelessnetworks (e.g., WiFi), instant messaging, HTTP and SMTP, and variouscombinations of the foregoing. Although only a few computers aredepicted in FIGS. 1-2, it should be appreciated that a typical systemcan include a large number of connected computers.

Each client device may be configured similarly to the server 110, with aprocessor, memory and instructions as described above. Each clientdevice 160 or 170 may be a personal computer intended for use by aperson 191-192, and have all of the components normally used inconnection with a personal computer such as a central processing unit(CPU) 162, memory (e.g., RAM and internal hard drives) storing data 163and instructions 164, an electronic display 165 (e.g., a monitor havinga screen, a touch-screen, a projector, a television, a computer printeror any other electrical device that is operable to display information),end user input 166 (e.g., a mouse, keyboard, touch-screen ormicrophone). The client device may also include a camera 167, positioncomponent 168, accelerometer, speakers, a network interface device, abattery power supply 169 or other power source, and all of thecomponents used for connecting these elements to one another.

Although the client devices 160 and 170 may each comprise a full-sizedpersonal computer, they may alternatively comprise mobile devicescapable of wirelessly exchanging data with a server over a network suchas the Internet. By way of example only, client device 160 may be awireless-enabled PDA, cellular phone, tablet PC, netbook, or otherdevice capable of obtaining information via the Internet. The user mayinput information using a small keyboard, a keypad, a touch screen, etc.

Data 134 may include map information 136 which may be used to generateone or more maps. The map information may include vector data which maybe used to define polygons for various geographical features such asroads, rivers, lakes, countries, continents, oceans, and other featurestypically found in geographical maps. The various vectors are eachassociated with geographical locations, such that the server 110 iscapable of selecting, retrieving and transmitting one or more vectors toa client device in response to receipt of a geographical location.

This data may be used to render highly detailed views of a world map atvarious zoom levels. In one example, there may be 20 zoom levels,ranging from level 1 to level 20. Level 20 may be a very high zoom levelwhich allows for display of small portions of a map in great detail.Level 1 may be a very low zoom level which allows for display of largeportions of a map in less detail. Thus, the map information has thegreatest level of detail and may be associated with zoom level 20, asthis is the highest zoom level that may be rendered based on the mapinformation, even though this same information may be used to draw alarger portion of the map at various other zoom levels, such as level 10or level 1.

The screen shots of FIGS. 3A and 3B illustrate an exaggerated example ofthis idea. In these figures, a client device displays search result froma map search. Map 305 of FIG. 3A depicts the physical geometry ofvarious roadways. Map 315 of FIG. 3B is an image of the same generalarea at a higher zoom level. The curves of the roadways of Map 305appear smoother than those of Map 315. This is because although theclient device may display the same amount of detail, when theinformation is rendered, as the zoom level decreases (zooming out), lessdetail is “observed.” In other words, some of the finer detail is lostat the lower zoom level. For example, a curved portion of a road segmentmade up of several points may be rendered as nearly straight as theclient device zooms out because fewer of the points are distinguishable.

It will be understood that the geographic locations may be expressed invarious ways including but not limited to latitude/longitude positions,street addresses, points on a map (such as when a user clicks on a map),building names, other data capable of identifying one or more geographiclocations, and ranges of the foregoing.

The server may also access a set of tolerance values 138. When a vertexis removed from a vector used to render an object, the amount of changeto the object before and after the removal of the vertex may bemeasured, for example, by calculating a distance between the removedvertex and the line formed between the two immediately neighboringvertices.

The tolerance may be based on an estimated amount of change to an objectafter a simplification process has removed one or more vertices from theobject. Because the amount of change to an object will generallyincrease as the data is simplified for each subsequent zoom level, thetolerance value between the different zoom levels will differsignificantly. Thus, the tolerance value may actually be a set ofvalues, each value in the set associated with a particular zoom level.For example, if there are 20 zoom levels, ranging from 1 to 20 asdescribed above, there may be a tolerance value associated with eachsubsequent zoom level (e.g., 19, 18, 17, etc.) As will be described inmore detail below, the set of tolerance values may be used to determinethe number of vertices to be removed when simplifying the mapinformation to a particular zoom level.

Data 134 may also include a reduction proportion value 140. As will bedescribed in more detail below, this value may be used to determinewhether the simplifying the map information to a lesser zoom level wouldbe worthwhile both from a processing power perspective as well as astorage perspective.

Various operations in accordance with aspects of the invention will nowbe described. It should also be understood that the following operationsdo not have to be performed in the precise order described below.Rather, various steps can be handled in a different order orsimultaneously.

The server may simplify the map information to a lower zoom level, byremoving vertices from the vector data. It will be understood that anypolygonal simplification algorithm which allows for the simplificationof, in some examples very large polygonal models, may be used. In oneexample, using features such as “s2polygon,” “s2polyline,” and“s2polygonbuilder” of the S2-Geometery-Library from Google Inc., apolygon with a set of vertices may be simplified based on a tolerancevalue. The polygon is then traversed to eliminate vertices that arewithin the tolerance value of any edges between remaining vertices (asdescribed above). Once this has been completed, the edges may intersect.The edges may then be broken at the intersection points and reassembledto generate a new, simplified polygon.

In one example, the server may generate simplified map information atlevel 19 by removing vertices from the map information at level 20 (thelevel with the greatest amount of detail). For example, a simplifiedgeometry appropriate for a given zoom level may be one in which thedifferences between the simplified version and the original versiondisplayed on a screen of a given size, such as 1000 by 1000 pixels, donot exceed a certain tolerance maximum (described in more detail below),usually equivalent to one screen pixel. Thus, the simplification betweenthe map information at level 19 and the map information at level 20 maybe one which differs by no more than a single screen pixel based on thegiven screen size.

Each time the object is simplified using a simplification algorithm,objects have less detail because one or more vertices may be removed.FIG. 4 depicts a very simplified example of this concept. Feature 401 isa polygon of 8 vertices, here, at the greatest level of detail.Presumably, this would be the view of an object at its highest zoomlevel. As the zoom level decreases, the simplification for each zoomlevel removes one or more vertices. Thus, the number of vertices thatare “observed” decreases. Feature 402, which has 7 vertices, isgenerated by removing a vertex from feature 401. As more and morevertices are removed, the polygon becomes simpler and simpler, less andless detailed. Eventually, the polygon becomes a triangle 406, a line407, and finally a point 408. Accordingly, for each vertex which isremoved, the object may change.

In one example, the map information may be computed for each zoom leveland stored. However, simplifying this vector data for each of thevarious zoom levels may be an expensive and time consuming process whichrequires significant processing power. In addition, storing thesesimplified versions may also be costly, as the complexity of the mapinformation and the number of different zoom levels increases. Thetolerance and reduction may be used to determine when the simplificationmakes sense.

In one example, the server may quantify this change or the removaleffect by calculating a difference between the original object and thesimplified object where a vertex is removed. This change may be measuredin linear units such as feet, meters, miles, etc. in order to determinea tolerance value for each change. In one example, a first polygon maybe simplified by removing a vertex as described about to generate asecond, simplified polygon. The differences between the first polygonand the second polygon may be computed based on the difference betweenthe removed vertex and the line between its two immediate neighboringvertices.

As shown in FIG. 5, polygon 501 includes 4 vertices at differentgeolocation coordinates: point 1 at (0,0), point 2 at (0,3), point 3 at(4,0), and point 4 at (4,3). Assuming that a first simplification ofpolygon 504 requires that a point, such as point 4, be removed, theresult is triangle 502 with 3 vertices. If a second simplification isperformed, a second point may be removed, resulting in line 503. If athird simplification is performed, a third point may be removed,resulting in point 504 at point 1.

The differences between the simplified versions of polygon 501 may becalculated based on the difference values. For example, the differencebetween polygon 501 and triangle 502 may be calculated based on thedistance from point 4 to the line between points 2 and 3 (point 4'simmediate neighbors), which is D₁=2.5.

The difference between triangle 502 and line 503 may be calculated basedon the distance between point 3 and the line between points 1 and 2(point 3's immediate neighbors), which is D₂=4.

The difference between line 503 and point 504 may be calculated based onthe distance between point 1 and point 2 (point 1's immediate neighbor)is D₃=3.

Each level of simplification for a particular object or polygon isassociated with a different tolerance value. Thus, the tolerance valuemay actually be a set of values, where each value in the set associatedwith a particular zoom level. If there are 20 zoom levels, level 1 tolevel 20, for example, there is a tolerance value for eachsimplification, or 19 total tolerance values in the set.

Using the tolerance values, the server may estimate a proportion ofvertices which will be removed during a simplification. For example, thenumber of vertices of the pre-simplified map information may be V. Theserver may calculate the number vertices, S, which have a differencevalue at or above a certain a tolerance value for a particular zoomlevel. These vertices may be considered to have “met” the tolerancevalue for the particular zoom level. In other words, each vertex whichwould have a removal effect below the tolerance value may possibly beremoved during the simplification process.

The proportion of vertices may then be used to determine whether tosimplify the map information. The server may compute the simplifiedgeometry for a given zoom level Z only if the number of vertices whichwould meet the tolerance value T (for zoom level z) divided by the totalnumber of vertices at the previous (more accurate) zoom level z′ wouldbe greater than or equal to (R≧S/V). For example, if R is 50%, theserver may only actually run the simplification process if the number ofvertices which would meet the tolerance level is at least 50% of thetotal number of vertices. Thus, if R=50% and the number of vertices inthe map information at level 20 is 100, the number of vertices whichmeet the tolerance value for level 19 would have to be or more in orderfor the server to simply the map information to level 19.

If the server determines that R is less than S/V, then the server mayexamine the next highest zoom level. For example, if the serverdetermines that the number of vertices of the map information at level20 which meet the tolerance value for level 19 is less than 50% of thetotal number of vertices, the server may make the same determination forthe next highest level. In other words, the server may determine thenumber of vertices of the map information at level 20 would meet thetolerance value level 18 and whether this number is greater than 50% ofthe total number of vertices.

As noted above, because distances between vertices which would overlapon a single screen pixel at level 19 would be less than the distancesbetween vertices which could overlap on a single screen pixel at level18, the tolerance value will be greater for level 18 than level 19. Asthe simplification is performed at lower zoom levels, the number ofvertices to be removed may increase. Thus, it may be likely that eventhough the number of vertices for the map information at level 20 whichmeet the threshold value for level 19 is less than R percentage of thetotal number of vertices, the number of vertices for the map informationat level 20 which meet the threshold value for level 18 may be greaterthan (or equal to) R.

It will be understood that the amount of work to be done may besignificantly reduced based upon the value selected for R. For example,if R is very large, for example, greater than 50%, it is unlikely thatan R so large would be achieved between every two consecutive zoomlevels. Thus, simplifications may not be calculated for each zoom leveland simplifications which are calculated are more likely to remove agreater number of vertices.

The computational savings obtained may also result in storage savings asthe simplified geometries are computed only when a substantial sizereduction can be obtained. In addition, less bandwidth may be needed totransfer the simplified map information to the client device.

Once the server determines that simplifying to a lower zoom level mayreduce the total number of vertices V by at least R (based on the numberof vertices which are at or above the tolerance value T), the server maysimplify the map information as described above. The server mayassociate the resulting map information with the corresponding zoomlevel and store this data in memory accessible by the server.

A geometry manifest may be stored, for example, in map information 136of FIG. 1. The manifest may be used in order to keep track of the zoomlevels for which no simplified geometry exists, for which a simplifiedgeometry exists, or both. For example, if the manifest identifies thatthere are no simplified versions of the map information for levels 1-4,6-9, 11-14, or 16-19, the server may have access to the map informationat zoom levels 5, 10, 15, and 20 (the original map information).

In addition, instead of simplifying based on the original, very largegeometry, the server may simplify based on the result of the mostrecently computed simplification, proceeding in order from the mostaccurate zoom level to the zoom level corresponding to a world view.This may also reduce the amount of processing required during eachsubsequent simplification process as the input map information would besignificantly reduced. Assuming the server has simplified the mapinformation at level 20 to obtain map information at level 18, theserver may now use the map information at level 18 to determine whetherto simplify the map information to an even lower zoom level. Forexample, the server may determine whether the number of vertices of themap information at level 18 which meet the tolerance value for level 17would be greater than (or equal to) R.

This process may continue until the server has exhausted its examinationover each of the zoom levels. For example, the server may continue todetermine whether to simplify the map information at each zoom levelbelow 20 (the highest zoom level) until the server reaches zoom level 1corresponding to, for example, a world view of the map.

As shown in flow diagram 600 of FIG. 6, the server selects mapinformation for simplification at block 602. This map information isassociated with a highest zoom level and includes a plurality ofvertices (V) for rendering maps at various zoom levels. The serveridentifies a minimum threshold value (R) for determining whether tosimplify the map information to the next highest zoom level at block604. The server may also identify a tolerance value for each zoom levelbelow the highest zoom level at block 606. The server determines anumber of vertices (S) which if removed, would be associated with adifference value which is less than or equal to a tolerance valueassociated with the next highest zoom level at block 608.

At block 610, the server determines whether the number of verticesdivided by the plurality of vertices of the selected map information isgreater than or equal to the identified minimum threshold value, orwhether S/V≧R. If so, the server simplifies the selected map informationusing a simplification process to obtain next map information associatedwith the next highest zoom level and a next plurality of vertices (T) atblock 614. The server stores the next map information in memory (e.g.map information 136 of FIG. 1) at block 616. At block 618, the serverdetermines whether the next map information can be simplified further,or whether there is a new next highest zoom level less than the previousnext highest zoom level. If not, the process ends at block 622.

If there is a new next highest zoom level less than the previous nexthighest zoom level, the server selects the next map information forsimplification at block 620 and returns to block 608 to calculate thenew number of vertices (s) which if removed, would be associated with adifference value which is less than or equal to the tolerance valueassociated with the new next highest zoom level.

Returning to block 610, if S/V is less than R, the server moves to block612 to determine if there is a new next highest zoom level less than theprevious next highest zoom level. If not, the process ends at block 622.If there is a new next zoom level at block 612, the server again returnsto block 608 to determine another number of vertices (S). The serverthen returns to block 610 to determine whether S/V R based on the newvalue for S.

Once the simplified map information has been stored (e.g. in mapinformation 136 of FIG. 1), the server may transmit the simplified mapinformation to client devices for display to a user. In one example, theserver may receive a request for the map information from a clientdevice (or service) specifying a particular zoom level. In response, theserver may access the manifest, examine the map information, return mapinformation associated with the next highest accurate zoom level Z sothat the data may be rendered at Z accurately. In other words, theserver may provide map information with the requested zoom level, and ifthe requested zoom level is not available, the server may provide theclosest available zoom level that is more accurate than the requestedzoom level.

For example, returning to the example above where the manifestidentifies that there are no simplified versions of the map informationfor levels 1-4, 6-9, 11-14, or 16-19, the server may have access to mapinformation at levels 5, 10, 15, and 20. If the request identifies zoomlevel 6, the server may determine that the next highest zoom level islevel 10. Thus, the server may transmit the map information for level 10to the client device. Similarly, if the request identifies zoom level14, the server may transmit level 15 to the client device (or service).Again, in some examples, the client service may perform variouscomputations and transmit the map information to the client device. Oncethe client device has received the map information, the client devicemay render the map information at the requested zoom level. The servermay also send map information associated with a default zoom level, suchas the highest stored zoom level or second highest stored zoom level, ifno zoom level is specified.

As these and other variations and combinations of the features discussedabove can be utilized without departing from the invention as defined bythe claims, the foregoing description of exemplary embodiments should betaken by way of illustration rather than by way of limitation of theinvention as defined by the claims. It will also be understood that theprovision of examples of the invention (as well as clauses phrased as“such as,” “e.g.”, “including” and the like) should not be interpretedas limiting the invention to the specific examples; rather, the examplesare intended to illustrate only some of many possible aspects.

1. A computer-implemented method comprising: accessing map informationassociated with a first zoom level, the map information including aplurality of vertices associated with one or more objects such that eachobject is associated with a set of one or more vertices of the pluralityof vertices; identifying a minimum threshold proportion for determiningwhether to simplify the map information; identifying a tolerancedistance value associated with a second zoom level that includes alesser amount of detail than the first zoom level; determining, by aprocessor, a subset of the plurality of vertices based on: (1) for eachobject of the one or more objects, calculating a distance from eachgiven vertex of the set of one or more vertices associated with theobject to a line between the immediate neighboring vertices of the givenvertex, and (2) determining whether each calculated distance is lessthan or equal to the tolerance distance value associated with the secondzoom level; determining a proportion based on the subset and theplurality of vertices; and if the proportion is greater than or equal tothe minimum threshold proportion, calculating a simplified version ofthe map information at the second zoom level.
 2. The method of claim 1,further comprising: identifying a tolerance distance value associatedwith a third zoom level; if the proportion is less than the minimumthreshold value, determining, by the processor, a second subset of theplurality of vertices based on: (1) for each object of the one or moreobjects, calculating the distance from each given vertex of the set ofone or more vertices associated with the object to a line between theimmediate neighboring vertices of the given vertex, and (2) determiningwhether each calculated distance is less than or equal to the tolerancedistance value associated with the third zoom level; determining asecond proportion based on the second subset and the plurality ofvertices; and if the second proportion is greater than the minimumthreshold value, calculating another simplified version of the mapinformation at the third zoom level.
 3. The method of claim 2, whereinthe second zoom level includes a greater level of detail than the thirdzoom level.
 4. The method of claim 2, wherein the tolerance distancevalue associated with the second zoom level is less than the tolerancedistance value associated with the third zoom level.
 5. The method ofclaim 1, wherein the simplified version of the map information at thesecond zoom level includes a second plurality of vertices of theplurality of vertices associated with one or more second objects suchthat each second object is associated with a second set of one or morevertices of the plurality of vertices; identifying a tolerance distancevalue associated with a third zoom level which includes a lesser amountof detail than the second zoom level; determining, by the processor, asecond subset of the plurality of vertices based on: (1) for each secondobject of the one or more second objects, calculating a distance fromeach given vertex of the second set of one or more vertices associatedwith the second object to a line between the immediate neighboringvertices of the given vertex associated with the second object, and (2)determining whether each calculated distance is less than or equal tothe tolerance distance value associated with the third zoom level;determining a second proportion based on the second subset and theplurality of vertices; and if the second proportion is greater than orequal to the minimum threshold value, calculating a second simplifiedversion of the map information at the third zoom level.
 6. The method ofclaim 5, further comprising: identifying a tolerance distance valueassociated with a fourth zoom level; if the second proportion is lessthan the minimum threshold value, determining, by the processor, a thirdsubset of the plurality of vertices based on: (1) for each second objectof the one or more second objects, calculating a distance from eachgiven vertex of the set of one or more vertices associated with thesecond object to a line between the immediate neighboring vertices ofthe given vertex associated with the second object, and (2) determiningwhether each calculated distance is less than or equal to the tolerancedistance value associated with the fourth zoom level; determining athird proportion based on the third subset and the plurality ofvertices; and if the third proportion is greater than the minimumthreshold value, calculating another simplified version of the mapinformation at the fourth zoom level.
 7. The method of claim 5, furthercomprising: receiving, from a first device, a request for mapinformation associated with a particular zoom level including aparticular level of detail; identifying responsive map informationassociated with a zoom level which includes a level of detail closest tothe particular level of detail and which is also greater than or equalto the particular level of detail; and transmitting the responsive mapinformation to the first device for display at the particular zoomlevel.
 8. The method of claim 5, further comprising storing thesimplified version of the map information at the second zoom level andthe second simplified version of the map information at the third zoomlevel in memory accessible by the processor.
 9. A device comprising:memory storing map information associated with a first zoom level, themap information including a plurality of vertices associated with one ormore objects such that each object is associated with a set of one ormore vertices of the plurality of vertices; a processor coupled to thememory, the processor being operable to: identify a minimum thresholdproportion for determining whether to simplify the map information;identify a tolerance distance value associated with a second zoom levelthat includes a lesser amount of detail than the first zoom level;determine a subset of the plurality of vertices based on: (1) for eachobject of the one or more objects, calculating a distance from eachgiven vertex of the set of one or more vertices associated with theobject to a line between the immediate neighboring vertices of the givenvertex, and (2) determining whether each calculated distance is lessthan or equal to the tolerance distance value associated with the secondzoom level; determine a proportion based on the subset and the pluralityof vertices; and if the proportion is greater than or equal to theminimum threshold proportion, calculate a simplified version of the mapinformation at the second zoom level.
 10. The device of claim 9, whereinthe processor is further operable to: identify a tolerance distancevalue associated with a third zoom level; if the proportion is less thanthe minimum threshold value, determine a second subset of the pluralityof vertices based on: (1) for each object of the one or more objects,calculating the distance from each given vertex of the set of one ormore vertices associated with the object to a line between the immediateneighboring vertices of the given vertex, and (2) determining whethereach calculated distance is less than or equal to the tolerance distancevalue associated with the third zoom level; determine a secondproportion based on the second subset and the plurality of vertices; andif the second proportion is greater than the minimum threshold value,calculate another simplified version of the map information at the thirdzoom level.
 11. The device of claim 10, wherein the second zoom levelincludes a greater level of detail than the third zoom level.
 12. Thedevice of claim 10, wherein the tolerance distance value associated withthe second zoom level is less than the tolerance distance valueassociated with the third zoom level.
 13. The device of claim 9, whereinthe simplified version of the map information at the second zoom levelincludes a second plurality of vertices of the plurality of verticesassociated with one or more second objects such that each second objectis defined by a second set of one or more vertices of the plurality ofvertices, and the processor is further operable to: identify a tolerancedistance value associated with a third zoom level which includes alesser amount of detail than the second zoom level; determine a secondsubset of the plurality of vertices based on: (1) for each second objectof the one or more second objects, calculating a distance from eachgiven vertex of the second set of one or more vertices associated withthe second object to a line between the immediate neighboring verticesof the given vertex associated with the second object, and (2) determinewhether each calculated distance is less than or equal to the tolerancedistance value associated with the third zoom level; and determine asecond proportion based on the second subset and the plurality ofvertices; and if the second proportion is greater than or equal to theminimum threshold value, calculate a second simplified version of themap information at the third zoom level.
 14. The device of claim 13,wherein the processor is further operable to: identify a tolerancedistance value associated with a fourth zoom level; if the secondproportion is less than the minimum threshold value, determine a thirdsubset of the plurality of vertices based on: (1) for each second objectof the one or more second objects, calculating a distance from eachgiven vertex of the set of one or more vertices associated with thesecond object to a line between the immediate neighboring vertices ofthe given vertex associated with the second object, and (2) determiningwhether each calculated distance is less than or equal to the tolerancedistance value associated with the fourth zoom level; and determine athird proportion based on the third subset and the plurality ofvertices; and if the third proportion is greater than the minimumthreshold value, calculate another simplified version of the mapinformation at the fourth zoom level.
 15. The device of claim 13,wherein the processor is further operable to: receive, from a firstdevice, a request for map information associated with a particular zoomlevel including a particular level of detail; identify responsive mapinformation associated with a zoom level which includes a level ofdetail closest to the particular level of detail and which is alsogreater than or equal to the particular level of detail; and transmitthe responsive map information to the first device for display at theparticular zoom level.
 16. The device of claim 13, wherein the processoris further operable to store the simplified version of the mapinformation at the second zoom level and the second simplified versionof the map information at the third zoom level in the memory.